home *** CD-ROM | disk | FTP | other *** search
/ Aminet 38 / Aminet 38 (2000)(Schatztruhe)[!][Aug 2000].iso / Aminet / dev / basic / BlitzASMInclud.lha / BlitzASMInclude / Src / LotanArgs.a < prev    next >
Encoding:
Text File  |  2000-02-26  |  3.3 KB  |  145 lines

  1.          INCLUDE   'blitz.i'
  2.          INCLUDE   'lib/exec.i'
  3.          INCLUDE   'lib/dos.i'
  4.          INCLUDE   'exec/execbase.i'
  5.          INCLUDE   'dos/dosextens.i'
  6.          INCLUDE   'workbench/startup.i'
  7.  
  8.          libheader 208,Init,0,Exit,LibErrs
  9.  
  10.          acommand  long
  11.             args
  12.             libs
  13.             subs   _wbmessage,0,0
  14.          name      'wbmessage','- Returns location of WBStartup message'
  15.  
  16.          afunction long
  17.             args
  18.             libs
  19.             subs   _WBArgs,0,0
  20.          name      'WBArgs','- Returns the number of arguments passed by the Workbench'
  21.  
  22.          afunction string
  23.             args   long
  24.             libs   doslib,la6
  25.             subs   _wArg,0,0
  26.          name      'wArg','(Num) - Used to get WB args'
  27.  
  28.          acommand  long
  29.             args   unknown
  30.             libs   doslib,la6
  31.             subs   _ReadArgs,0,0
  32.          name      'ReadArgs','(Template) - Used to parse CLI args'
  33.  
  34.          afunction long
  35.             args   long
  36.             libs
  37.             subs   _cArg,0,0
  38.          name      'cArg','(Num) - Used to get CLI args'
  39.  
  40. Init:    nullsub   LibInit,0,0, execlib,la6
  41. Exit:    nullsub   LibExit,0,0, execlib,la6, doslib,ld6
  42.  
  43.          libfin
  44.  
  45. _wbmessage:
  46.          MOVE.L    WBMsg(pc),d0
  47.          RTS
  48.  
  49. _WBArgs:
  50.          MOVE.L    WBMsg(pc),d1
  51.          BEQ       Oops
  52.          MOVEA.L   d1,a0
  53.          MOVE.L    sm_NumArgs(a0),d0
  54.          RTS
  55.  
  56. _wArg:
  57.          MOVE.L    WBMsg(pc),d1
  58.          BEQ       Oops
  59.          MOVEA.L   d1,a0
  60.          MOVEA.L   sm_ArgList(a0),a0
  61. 1$       MOVE.L    wa_Lock(a0),d5
  62.          MOVE.L    wa_Name(a0),d6
  63.          ADDQ.L    #8,a0
  64.          DBRA      d0,1$
  65.  
  66.          MOVE.L    d5,d1
  67.          BEQ       Oops
  68.          MOVE.L    a3,d2
  69.          MOVE.L    #$FF,d3
  70.          Call      NameFromLock
  71.  
  72.          MOVE.L    a3,-(sp)
  73. 2$       TST.B     (a3)+
  74.          BNE       2$
  75.          SUBQ.L    #1,a3
  76.  
  77.          CMPI.B    #":",-1(a3)
  78.          BEQ       nd$                  ; wArg_NoDir
  79.          MOVE.B    #"/",(a3)+
  80.  
  81. nd$      TST.L     d6
  82.          BEQ       nn$
  83.          MOVEA.L   d6,a0
  84. 3$       MOVE.B    (a0)+,(a3)+
  85.          BNE       3$
  86.  
  87.          SUBQ.L    #1,a3
  88. nn$      MOVE.L    a3,d0               ; wArg_NoName
  89.          SUB.L     (sp)+,d0
  90.          RTS
  91.  
  92. _ReadArgs:
  93.          MOVE.L    ArgArray(pc),d2
  94.          MOVE.L    d0,d1
  95.          MOVEQ     #0,d3
  96.          Call      ReadArgs
  97.          MOVE.L    d0,CLIArg
  98.          RTS
  99.  
  100. _cArg:
  101.          MOVEA.L   ArgArray(pc),a0
  102.          MULU.W    #4,d0
  103.          MOVE.L    0(a0,d0.w),d0
  104.          RTS
  105.  
  106. Oops:
  107.          MOVEQ     #0,d0
  108.          RTS
  109.  
  110. LibInit:
  111.          MOVEA.L   ThisTask(a6),a2
  112.          TST.L     pr_CLI(a2)
  113.          BNE       1$                  ; FromCli
  114. ;         LEA      092(a2),a0
  115. ;         JSR      LVOWaitPort(a6)
  116.          LEA       pr_MsgPort(a2),a0
  117.          Call      GetMsg
  118.          MOVE.L    d0,WBMsg
  119.          RTS
  120.  
  121. 1$       BAllocMem #256,#$10000,ArgArray
  122.          RTS
  123.  
  124. LibExit:
  125.          MOVE.L    WBMsg(pc),d0
  126.          BEQ       CLI$
  127.          MOVEA.L   d0,a1
  128.          Call      Forbid
  129.          Call      ReplyMsg
  130.          RTS
  131. CLI$     MOVE.L    CLIArg(pc),d1
  132.          MOVE.L    a6,-(sp)
  133.          MOVEA.L   d6,a6
  134.          Call      FreeArgs
  135.          MOVEA.L   (sp)+,a6
  136.          RTS
  137.  
  138. WBMsg    Dc.l 0
  139. CLIArg   Dc.l 0
  140. ArgArray Dc.l 0
  141.  
  142. LibErrs
  143.          Dc.b "$VER: Lotan's Args Library 0.2 (19.05.99)",0
  144.          Even
  145.